"""
2.编写Computer类,包含CPU,内存,硬盘等属性
(1).get_details方法用于返回Computer的详细信息
(2).编写PC子类,集成Computer类,添加特有属性(品牌brand)
(3).编写NotePad子类,继承Computer类,添加特有属性 [color]
(4).完成测试，创建PC和NotePad对象，分别给对象中特有的属性赋值,以及从Computer类继承的属性赋值,并使用方法打印输出信息
"""
"""
思路分析
1.父类:Computer
2.公共属性 :CPU(cpu) , 内存(memory) , 硬盘(disk)
3.构造器:__init__(self , cpu , memory , disk)
4.方法:get_details(self)
5.子类:PC(Computer)
6.公共属性:brand
7.构造器:__init__(self , cpu , memory , disk , brand) 有一个新的知识点
8.方法:print_info(self) , 完成功能,输出pc对象的信息(即属性的信息)
"""

class Computer:
    cpu = None
    memory = None
    disk = None
    #使用构造方法进行初始化
    def __init__(self , cpu , memory , disk):
        self.cpu = cpu
        self.memory = memory
        self.disk = disk

    #打印信息
    def get_details(self):
        return f"cpu={self.cpu} , memory = {self.memory} , disk = {self.disk}"


#子类PC继承Computer
class PC(Computer):
    brand = None
    #声明构造方法,记着，因为这里继承了Computer类,所以这里也就拥有了Computer类的属性
    #所以在初始化的时候也应该把这些属性带着
    def __init__(self , cpu , memory , disk , brand):
        #初始化子类的属性 - 方式1 [这样写太不划算,因为父类已经提供了初始化的方法，直接就可以使用]
        # self.cpu =cpu
        # self.memory = memory
        # self.disk = disk
        # self.brand = brand
        #初始化子类的属性 - 方式2
        """
        解读:
        1.通过super().xx 方法可以调用父类的方法
        2.这里，我们就通过super().__init__(cpu , memory , disk)去调用父类的构造器，完成对父类属性的初始化任务
        3.self.brand = brand 表示子类特有属性,由子类的构造器完成
        """
        super().__init__(cpu , memory , disk)
        #对自己类里面的字段进行初始化
        self.brand = brand

    def print_info(self):
        print(f"pc电脑的信息{self.get_details()},品牌{self.brand}")

class NotePad(Computer):
    color = None
    #定义初始化函数
    def __init__(self , cpu , memory , disk , color):
        super().__init__(cpu , memory , disk)
        #子类的方法自己来进行初始化
        self.color = color

    def print_info(self):
        print(f"NotePad的信息是{self.get_details()} , 颜色{self.color}")


pc = PC("8核" , "运行内存16G" , "硬盘500G" , "华为荣耀")
pc.print_info()

print("-------------------------")
notePad = NotePad("16核" , "运行内存32G"  , "硬盘1T" , "小米")
notePad.print_info()